var _topId="";//第一条数据的id
var _endId="";//最后一条数据的id
var _isLoading=false;//是否正在加载中

var loadUtil = window.loadUtil={
	config:{
		token:    webapp.getToken(),
		pageSize: webapp.config.pageSize,
		flag:     "",
		flagId:   "",
		url:""
	},
	/**
	 * 
	 * 调用接口进行数据加载
	 * 
	 * @param {Object} flag   空：第一次加载数据，up:上拉，加载历史数据，down:下拉加载最新数据
	 * @param {Object} flagId 当flag为up：该值为_endId，flag为down：该值为_topId
	 */
	loadList:function(con){
		if(con.resetConfig){
			_topId="";
			_endId="";
			_isLoading=false;
		}
		//如果有url
		if(con.url){
			loadUtil.config.url=con.url;
		}else{
			con.url=loadUtil.config.url;
		}
		if(!con.data){
			con.data={};
		}
		//合并参数
		if(!con.data.pageSize){
			con.data.pageSize=loadUtil.config.pageSize;
		}
		if(!con.data.flag){
			con.data.flag=loadUtil.config.flag;
		}
		if(!con.data.flagId){
			con.data.flagId=loadUtil.config.flagId;
		}
		if(!con.data.token){
			con.data.token=loadUtil.config.token;
		} 
		//把url地址设置在 
		document.getElementById("data-list").setAttribute("data-loadurl",con.url);
		_isLoading=true;
		var flag=webapp.ajax({
			url:con.url,
			data:con.data,
			success:function(json){
				
//				alert(webapp.debug(json))
				
				
				//九宫格图片的宽度
				json.imgW=(webapp.getScreenW()-30)/3;
				if(json.code!="200"){
					mui.toast(json.msg);
					return;
				}
				webapp.debug(json);
				loadUtil.loadListCallBack(json,con);
				//如果返回数据为空，并且页面上的数据为空，显示无数据
				var _ele=document.getElementById("nodatas");
				var dataSize=json.data.length;
				if(_ele && _ele!="null"){
					if(dataSize!=0 || (dataSize==0 && webapp.util.isNotNull(_endId))){
						_ele.classList.add("hide");
					}else{
						_ele.classList.remove("hide");
					}
				}
				webapp.closeWaiting();
				//如果有回调
				_isLoading=false;
			}
		});
		if(!flag){
			plus.webview.currentWebview().endPullToRefresh();
		}
	},
	//加载数据的回调函数，在页面生成数据
	loadListCallBack:function(json,con){
		var flag=con.data.flag;
		var flagId=con.data.flagId;
		//本次返回数据的总条数
		var _dataLength=json.data.length;
		if(con.tip){
			json.tip=con.tip;
		}
		//当返回数据不为空的时候，进行一些处理
		if(_dataLength>0){
			//向上滑动，是加载历史数据
			if(flag=="up" || flag==""){
				loadUtil.appenHtmlAfter(json,con);
				//最后一条数据的id
				_endId=json.data[_dataLength-1].id;
			}else if(flag=="down"){
				//在页面上加载最新的数据
				loadUtil.appendHtmlBefore(json,con);
				_currentWebview.endPullToRefresh();
			}
		}else if(_dataLength==0){
			//如果返回的数据为空，需要进行一些提示
			if(flag=="up"){
				document.getElementById("loadingMore").innerHTML="没有更多数据了...";
			}else if(flag=="down"){
				_currentWebview.endPullToRefresh();
				plus.nativeUI.toast("当前已经是最新数据了");
			}
		}
		_isLoading=false;
	},
	appendHtmlBefore:function(json,con){
		json.tip=con.tip;
		json.imgPath=webapp.config.restUrl;
		//获取列表中第一个对象
		var firstItem = document.body.querySelector('.data-list-group');
		//渲染出模板
		var html=template("tpl-list",json);
		/****
		//创建代码片段
		var listWrapper = document.getElementById("data-list");
		var dom = document.createElement('div');
		dom.className ='data-list-group';
		dom.innerHTML=html;
		//创建代码片段结束
		listWrapper.insertBefore(dom,firstItem);
		****/
		document.getElementById("data-list").insertAdjacentHTML("afterbegin", html);
		//如果有回调
		if(con.callBack){
			con.callBack();
		}
	},
	/**
	 * 在列表的末尾追加数据
	 * @param {Object} json
	 */
	appenHtmlAfter:function(json,con){
		json.tip=con.tip;
		json.imgPath=webapp.config.restUrl;
		var html=template("tpl-list",json);
		/***
		//创建一个文档片段
		var fragment = document.createDocumentFragment();
		var dom = document.createElement('div');
		dom.className ='data-list-group';
		dom.innerHTML=html;
		fragment.appendChild(dom);
		//创建文档片段结束
		document.getElementById("data-list").appendChild(fragment);
		***/
		document.getElementById("data-list").insertAdjacentHTML("beforeend", html);
		
		//如果有回调
		if(con.callBack){
			con.callBack();
		}
	},
	scrollBottom:function(con){
		if(!con){
			con={};
		}
		if(_isLoading || webapp.util.isNull(_endId)){//如果当前正在加载数据中，不要进行任何处理，等待前一次数据加载完成
			return false;
		}
		document.getElementById("loadingMore").innerHTML="加载中...";
		document.getElementById("loadingMore").classList.remove("hide");
		loadUtil.loadList({
			data:{
				flag:   "up",
				flagId: _endId
			},
			callBack:con.callBack
		});
	},
	pullToRefresh:function(con){
		if(!con){
			con={};
		}
		//获取第一条数据，用于获取该数据的id
		var firstItem = document.body.querySelector('.list-item');
		//第一条数据没有，执行重新加载数据
		if(webapp.util.isNull(firstItem)){
			loadUtil.loadList({
				url:document.getElementById("data-list").getAttribute("data-loadurl")
			});
			return false;
		}
		loadUtil.loadList({
			data:{
				flag:webapp.config.PULL_DOWN,
				flagId:firstItem.getAttribute("data-id")
			},
			callBack:con.callBack
		});
		firstItem=null;
	}
};
